草庐IT

c++ - Visual Studio 和 Boost::Test

全部标签

c++ - 为什么boost::when_all会产生一个新线程

下面的代码是用boost1.62编译的。#defineBOOST_THREAD_VERSION4#defineBOOST_THREAD_PROVIDES_EXECUTORS#include#include#include#includeusingnamespacestd::literals::chrono_literals;intmain(){autostart=boost::make_ready_future();boost::loop_executorex;autoa=start.then(ex,[](auto&&){std::cout这会产生4个任务(a、b、c、d),它们之间有

c++ - 如何获得基于 c 函数的差异?

我们的团队使用svn来管理我们的源代码。在对C文件执行重构时,我偶尔会更改函数并将它们移动到文件中。通常我会尽量避免移动函数,因为它会让默认的svndiff对正在发生的事情有点困惑,而且它通常会提供一个比它需要的更令人困惑的diff。尽管如此,我偶尔也会更改函数文件位置和函数内部代码。另一个出现这种情况的地方是分支合并,当文件有冲突时,一个或两个分支都有移动以及函数内更改。因此,我正在寻找的是一种语义感知差异工具,它可以告诉我两个级别的差异-功能安排和细节(功能内)。我尝试使用“-p”选项来比较差异(-x-p到svn差异),但这不是它的目的,它肯定没有做我想要的。我刚刚想到的另一个选择

c++ - boost mutex, condition, scoped_lock ,我在这里用错了吗?

classMyClass{public:voidPushMessage(MyMessagem)//Thread1callsthis{boost::mutex::scoped_locklock(mMutex);mQueue.push_back(m);mCondition.notify_one();}MyMessagePopMessage(){boost::mutex::scoped_locklock(mMutex);while(mQueue.empty())mCondition.wait(lock);MyMessagemessage=mQueue.front();mQueue.pop_f

c++ - 使用 boost 获取文件的所有者和组

我想使用boost::filesystem从文件中获取所有者和组,但从未找到任何方法。我可以获得文件的权限,但由于我不知道文件的所有者,所以这没有任何意义。我找到了posixfstat函数,但我还是想使用boost或其他C++库而不是C函数。 最佳答案 您要执行的是Unix系统调用。但是你不想调用它?为什么?boost可以提供什么可能的值(value)?这不是可移植性,因为Unix之外的任何东西都不会有有意义的st_gid字段。 关于c++-使用boost获取文件的所有者和组,我们在St

C++/boost::thread 程序在 join_all 后挂起并从 Main 返回

第一次在这里发帖,但是我已经彻底搜索了这个问题的解决方案,但没有解决方案。我有一个类,它基本上使用静态范围的线程池来计算矩阵的条目。当需要进行新的计算时,静态条件变量会发出信号。当程序结束时,一个静态bool标志被改变,主线程在退出前调用join_all。问题是当我从intmain()返回时,程序似乎在销毁静态变量期间挂起。这是执行计算的类的粗略源代码:classFunctionCalculator{public:staticvoidcreateWorkers();staticvoiddestroyWorkers();staticvoidcalcFunction();private:s

c++ - 如何使用模块在 C 中编译应用程序?

我想做一个应用程序,它可以用外部模块编译,例如在php中。在php中你可以在运行时加载模块,或者将php与模块一起编译,这样模块就可以在运行时不加载。但我不明白如何做到这一点。如果我在module.c中有模块并且有一个函数,称为say_hello,如果你明白我的意思,我如何将它注册到主应用程序?/*module.c*/#include//hereregistersay_hellofunction,buthow,ifican'tinglobalscope//callanotherfunction?voidsay_hello(){printf("hello!");}如果我将所有文件(主应用

C++ getchar() 是否还有数据等待读取

我正在用c/c++实现一个关键阅读器程序。我正在使用Linux。我知道无缓冲的getchar函数将返回键的小数据值。对于所有ASCII键(a-z、A-Z、1-9、标点符号、回车、制表符和ESC),getchar()将返回一个值。对于其他键,例如方向键,会读取ESC键,但是当再次调用getchar()时,它会得到另一个值(A、B、C或D)。A=65B=66向上箭头=279165F5=27914953126ESC=27全表here有什么方法可以检查是否有更多字符要读取,或者是否只有一个字符?当读取一个键并且它的第一个值是ESC时,我不知道它是以ESC开头的功能键还是只是ESC键。#incl

c++ - Visual Studio 2012的任何免费C/C++重构工具/插件?

我看到了一些好的商业工具,比如:VisualAssistXCodeRushResharper(.NET)有什么免费的/开源的工具/插件可以做类似的工作吗? 最佳答案 微软的ProductivityPowerTools怎么样? 关于c++-VisualStudio2012的任何免费C/C++重构工具/插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/17314359/

c++ - 如何使用函数 freopen_s

为了从文本文件中读取输入,我写了下面的代码:intmain(){intx;#ifndefONLINE_JUDGEfreopen("input.txt","r",stdin);#endifscanf("%d",&x);printf("%d\n",x);system("pause");return0;}效果还不错。但是,在visualstudio中,编译器由于freopen而给我一个错误,并建议我改用freopen_s。我试图了解函数freopen_s的工作原理,但我做不到。我的代码:intmain(){intx;#ifndefONLINE_JUDGEFILE*stream;freopen

c++ - 在哪里可以找到可以在 cmake 中使用的 boost 组件列表?

我有一个cmake文件,可以像这样添加boost:if(ADD_BOOST)#addboostlibraryset(Boost_USE_STATIC_LIBSON)set(Boost_USE_STATIC_RUNTIMEON)file(TO_CMAKE_PATH$ENV{BOOST_ROOT}BOOST_ROOT)if(MSVC)set(BOOST_LIBRARYDIR${BOOST_ROOT}/lib64-msvc-12.0)else(MSVC)set(BOOST_LIBRARY_DIR$ENV{BOOST_ROOT})endif(MSVC)find_package(BoostCOM